home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / TextUtils.p < prev    next >
Encoding:
Text File  |  1997-08-12  |  8.4 KB  |  261 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        TextUtils.p
  3.  
  4.      Contains:    Text Utilities Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1985-1997 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT TextUtils;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __TEXTUTILS__}
  28. {$SETC __TEXTUTILS__ := 1}
  29.  
  30. {$I+}
  31. {$SETC TextUtilsIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __NUMBERFORMATTING__}
  38. {$I NumberFormatting.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __STRINGCOMPARE__}
  41. {$I StringCompare.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __DATETIMEUTILS__}
  44. {$I DateTimeUtils.p}
  45. {$ENDC}
  46.  
  47.  
  48. {$PUSH}
  49. {$ALIGN MAC68K}
  50. {$LibExport+}
  51.  
  52. {
  53.  
  54.     Here are the current System 7 routine names and the translations to the older forms.
  55.     Please use the newer forms in all new code and migrate the older names out of existing
  56.     code as maintainance permits.
  57.     
  58.     NEW NAME                    OLD NAMEs                    OBSOLETE FORM (no script code)
  59.  
  60.     FindScriptRun
  61.     FindWordBreaks                                            NFindWord, FindWord
  62.     GetIndString            
  63.     GetString
  64.     Munger
  65.     NewString                
  66.     SetString                
  67.     StyledLineBreak
  68.     TruncString
  69.     TruncText
  70.  
  71.     UpperString ($A054)            UprString, UprText
  72.     UppercaseText                SCUpperText (a only)        UpperText ($A456)
  73.     LowercaseText                                            LwrString, LowerText, LwrText ($A056)
  74.     StripDiacritics                                            StripText ($A256)
  75.     UppercaseStripDiacritics                                StripUpperText ($A656)
  76.  
  77.  
  78. }
  79.  
  80. { Type for truncWhere parameter in TruncString, TruncText }
  81.  
  82. TYPE
  83.     TruncCode                            = INTEGER;
  84.  
  85. CONST
  86.                                                                 {  Constants for truncWhere argument in TruncString and TruncText  }
  87.     truncEnd                    = 0;                            {  Truncate at end  }
  88.     truncMiddle                    = $4000;                        {  Truncate in middle  }
  89.     smTruncEnd                    = 0;                            {  Truncate at end - obsolete  }
  90.     smTruncMiddle                = $4000;                        {  Truncate in middle - obsolete  }
  91.  
  92.                                                                 {  Constants for TruncString and TruncText results  }
  93.     notTruncated                = 0;                            {  No truncation was necessary  }
  94.     truncated                    = 1;                            {  Truncation performed  }
  95.     truncErr                    = -1;                            {  General error  }
  96.     smNotTruncated                = 0;                            {  No truncation was necessary - obsolete  }
  97.     smTruncated                    = 1;                            {  Truncation performed    - obsolete  }
  98.     smTruncErr                    = -1;                            {  General error - obsolete  }
  99.  
  100.  
  101. TYPE
  102.     StyledLineBreakCode                    = SInt8;
  103.  
  104. CONST
  105.     smBreakWord                    = 0;
  106.     smBreakChar                    = 1;
  107.     smBreakOverflow                = 2;
  108.  
  109.  
  110. TYPE
  111.     ScriptRunStatusPtr = ^ScriptRunStatus;
  112.     ScriptRunStatus = RECORD
  113.         script:                    SInt8;
  114.         runVariant:                SInt8;
  115.     END;
  116.  
  117.     BreakTablePtr = ^BreakTable;
  118.     BreakTable = RECORD
  119.         charTypes:                PACKED ARRAY [0..255] OF CHAR;
  120.         tripleLength:            INTEGER;
  121.         triples:                ARRAY [0..0] OF INTEGER;
  122.     END;
  123.  
  124.     NBreakTablePtr = ^NBreakTable;
  125.     NBreakTable = RECORD
  126.         flags1:                    SInt8;
  127.         flags2:                    SInt8;
  128.         version:                INTEGER;
  129.         classTableOff:            INTEGER;
  130.         auxCTableOff:            INTEGER;
  131.         backwdTableOff:            INTEGER;
  132.         forwdTableOff:            INTEGER;
  133.         doBackup:                INTEGER;
  134.         length:                    INTEGER;                                {  length of NBreakTable  }
  135.         charTypes:                PACKED ARRAY [0..255] OF CHAR;
  136.         tables:                    ARRAY [0..0] OF INTEGER;
  137.     END;
  138.  
  139. {  The following functions are new names that work on 68k and PowerPC }
  140. FUNCTION Munger(h: Handle; offset: LONGINT; ptr1: UNIV Ptr; len1: LONGINT; ptr2: UNIV Ptr; len2: LONGINT): LONGINT;
  141.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  142.     INLINE $A9E0;
  143.     {$ENDC}
  144. FUNCTION NewString(theString: ConstStr255Param): StringHandle;
  145.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  146.     INLINE $A906;
  147.     {$ENDC}
  148. PROCEDURE SetString(theString: StringHandle; strNew: ConstStr255Param);
  149.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  150.     INLINE $A907;
  151.     {$ENDC}
  152. FUNCTION GetString(stringID: INTEGER): StringHandle;
  153.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  154.     INLINE $A9BA;
  155.     {$ENDC}
  156. PROCEDURE GetIndString(VAR theString: Str255; strListID: INTEGER; index: INTEGER);
  157. FUNCTION StyledLineBreak(textPtr: Ptr; textLen: LONGINT; textStart: LONGINT; textEnd: LONGINT; flags: LONGINT; VAR textWidth: Fixed; VAR textOffset: LONGINT): StyledLineBreakCode;
  158.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  159.     INLINE $2F3C, $821C, $FFFE, $A8B5;
  160.     {$ENDC}
  161. FUNCTION TruncString(width: INTEGER; VAR theString: Str255; truncWhere: TruncCode): INTEGER;
  162.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  163.     INLINE $2F3C, $8208, $FFE0, $A8B5;
  164.     {$ENDC}
  165. FUNCTION TruncText(width: INTEGER; textPtr: Ptr; VAR length: INTEGER; truncWhere: TruncCode): INTEGER;
  166.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  167.     INLINE $2F3C, $820C, $FFDE, $A8B5;
  168.     {$ENDC}
  169. PROCEDURE FindWordBreaks(textPtr: Ptr; textLength: INTEGER; offset: INTEGER; leadingEdge: BOOLEAN; breaks: BreakTablePtr; VAR offsets: OffsetTable; script: ScriptCode);
  170.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  171.     INLINE $2F3C, $C012, $001A, $A8B5;
  172.     {$ENDC}
  173. PROCEDURE LowercaseText(textPtr: Ptr; len: INTEGER; script: ScriptCode);
  174.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  175.     INLINE $3F3C, $0000, $2F3C, $800A, $FFB6, $A8B5;
  176.     {$ENDC}
  177. PROCEDURE UppercaseText(textPtr: Ptr; len: INTEGER; script: ScriptCode);
  178.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  179.     INLINE $3F3C, $0400, $2F3C, $800A, $FFB6, $A8B5;
  180.     {$ENDC}
  181. PROCEDURE StripDiacritics(textPtr: Ptr; len: INTEGER; script: ScriptCode);
  182.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  183.     INLINE $3F3C, $0200, $2F3C, $800A, $FFB6, $A8B5;
  184.     {$ENDC}
  185. PROCEDURE UppercaseStripDiacritics(textPtr: Ptr; len: INTEGER; script: ScriptCode);
  186.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  187.     INLINE $3F3C, $0600, $2F3C, $800A, $FFB6, $A8B5;
  188.     {$ENDC}
  189. FUNCTION FindScriptRun(textPtr: Ptr; textLen: LONGINT; VAR lenUsed: LONGINT): ScriptRunStatus;
  190.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  191.     INLINE $2F3C, $820C, $0026, $A8B5;
  192.     {$ENDC}
  193. {
  194.       The following functions are old names, but are required for PowerPC builds
  195.       because InterfaceLib exports these names, instead of the new ones.
  196. }
  197.  
  198. PROCEDURE FindWord(textPtr: Ptr; textLength: INTEGER; offset: INTEGER; leadingEdge: BOOLEAN; breaks: BreakTablePtr; VAR offsets: OffsetTable);
  199.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  200.     INLINE $2F3C, $8012, $001A, $A8B5;
  201.     {$ENDC}
  202. PROCEDURE NFindWord(textPtr: Ptr; textLength: INTEGER; offset: INTEGER; leadingEdge: BOOLEAN; nbreaks: NBreakTablePtr; VAR offsets: OffsetTable);
  203.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  204.     INLINE $2F3C, $8012, $FFE2, $A8B5;
  205.     {$ENDC}
  206. {
  207.    On 68K machines, LwrText, LowerText, StripText, UpperText and StripUpperText
  208.    return an error code in register D0, but System 7 PowerMacs do not emulate
  209.    this properly, so checking D0 is unreliable.
  210. }
  211.  
  212. PROCEDURE LwrText(textPtr: Ptr; len: INTEGER);
  213.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  214.     INLINE $301F, $205F, $A056;
  215.     {$ENDC}
  216. PROCEDURE LowerText(textPtr: Ptr; len: INTEGER);
  217.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  218.     INLINE $301F, $205F, $A056;
  219.     {$ENDC}
  220. PROCEDURE StripText(textPtr: Ptr; len: INTEGER);
  221.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  222.     INLINE $301F, $205F, $A256;
  223.     {$ENDC}
  224. PROCEDURE UpperText(textPtr: Ptr; len: INTEGER);
  225.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  226.     INLINE $301F, $205F, $A456;
  227.     {$ENDC}
  228. PROCEDURE StripUpperText(textPtr: Ptr; len: INTEGER);
  229.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  230.     INLINE $301F, $205F, $A656;
  231.     {$ENDC}
  232.  
  233. {  The following are new names which are exported by InterfaceLib }
  234.  
  235. PROCEDURE UpperString(VAR theString: Str255; diacSensitive: BOOLEAN);
  236. {  Old routine name but no new names are mapped to it: }
  237. PROCEDURE UprText(textPtr: Ptr; len: INTEGER);
  238.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  239.     INLINE $301F, $205F, $A054;
  240.     {$ENDC}
  241. {
  242.  
  243.     Functions for converting between C and Pascal Strings
  244.     (Previously in Strings.h)
  245.     
  246. }
  247. PROCEDURE C2PStrProc(aStr: UNIV Ptr);
  248. FUNCTION C2PStr(cString: UNIV Ptr): StringPtr;
  249. PROCEDURE P2CStrProc(aStr: StringPtr);
  250. FUNCTION P2CStr(pString: StringPtr): Ptr;
  251. {$ALIGN RESET}
  252. {$POP}
  253.  
  254. {$SETC UsingIncludes := TextUtilsIncludes}
  255.  
  256. {$ENDC} {__TEXTUTILS__}
  257.  
  258. {$IFC NOT UsingIncludes}
  259.  END.
  260. {$ENDC}
  261.